/**
*	@class COpenGLVertexFormat
*
*	@brief
*
*	@author William McVicar
*/

#pragma once

#ifndef __OPENGLVERTEXFORMAT_H_INCLUDED__
#define __OPENGLVERTEXFORMAT_H_INCLUDED__
#ifdef OPENGL

//  Library Includes

//  Local Includes
#include <gl\GL.h>

#include "VertexFormatBase.h"

//  Macros

//  Forward Declarations

//  Types

//  Constants

//  Prototypes

namespace Protein
{

class VertexFormat
{
	//Member Functions
public:

	VertexFormat( const VertexFormatBase* _pBase );
	~VertexFormat();

	void Enable();
	void Disable();

protected: 

private: 

	//Member Variables
public:

protected: 

private: 

	u32 m_uiStride;

	GLuint m_hasPosition;
    GLuint m_positionChannels;
    GLuint m_positionType;
    GLuint m_positionOffset;

    GLuint m_hasNormal;
    GLuint m_normalChannels;
    GLuint m_normalType;
    GLuint m_normalOffset;

	GLuint m_hasTCoord;
    GLuint m_tCoordChannels;
    GLuint m_tCoordType;
    GLuint m_tCoordOffset;

    GLuint m_hasColor;
    GLuint m_colorChannels;
    GLuint m_colorType;
    GLuint m_colorOffset;

};

#include "OpenGLVertexFormat.inl"

}

#endif // OPENGL
#endif //__OPENGLVERTEXFORMAT_H_INCLUDED__
